#include "BulletCollision/CollisionShapes/btConvexHullShape.h"
#ifdef __cplusplus
extern "C" {
#endif
btConvexHullShapeData* bullet_NewbtConvexHullShapeData(){
	btConvexHullShapeData* wrap_out = new btConvexHullShapeData();
	return wrap_out;
}

btConvexInternalShapeData* bullet_btConvexHullShapeData_GetFieldOfM_convexInternalShapeData(btConvexHullShapeData* c_this){
	return (btConvexInternalShapeData*)(&c_this->m_convexInternalShapeData);
}

int bullet_btConvexHullShapeData_GetFieldOfM_numUnscaledPoints(btConvexHullShapeData* c_this){
	return (int)(c_this->m_numUnscaledPoints);
}

char** bullet_btConvexHullShapeData_GetFieldOfM_padding3(btConvexHullShapeData* c_this){
	return (char**)(&c_this->m_padding3);
}

btVector3DoubleData** bullet_btConvexHullShapeData_GetFieldOfM_unscaledPointsDoublePtr(btConvexHullShapeData* c_this){
	return (btVector3DoubleData**)(&c_this->m_unscaledPointsDoublePtr);
}

btVector3FloatData** bullet_btConvexHullShapeData_GetFieldOfM_unscaledPointsFloatPtr(btConvexHullShapeData* c_this){
	return (btVector3FloatData**)(&c_this->m_unscaledPointsFloatPtr);
}

btConvexHullShape* bullet_NewbtConvexHullShape(double* points,int numPoints,int stride){
	btScalar const * c_arg_points=(btScalar const *)(void*)(points);
	int c_arg_numPoints=numPoints;
	int c_arg_stride=stride;
	btConvexHullShape* wrap_out = new btConvexHullShape(c_arg_points,c_arg_numPoints,c_arg_stride);
	return wrap_out;
}

void bullet_btConvexHullShape_addPoint(btConvexHullShape* c_this,btVector3* point,bool recalculateLocalAabb){
	btVector3 const& c_arg_point=(btVector3 const&)(*point);
	bool c_arg_recalculateLocalAabb=recalculateLocalAabb;
	c_this->addPoint(c_arg_point,c_arg_recalculateLocalAabb);
}

int bullet_btConvexHullShape_getNumPoints(btConvexHullShape* c_this){
	int c_out = c_this->getNumPoints();
	int wrap_out = (c_out);
	return wrap_out;
}

btVector3* bullet_btConvexHullShape_getPoints(btConvexHullShape* c_this){
	btVector3 const * c_out = c_this->getPoints();
	btVector3* wrap_out = (btVector3*)(void*)(c_out);
	return wrap_out;
}

btVector3* bullet_btConvexHullShape_getScaledPoint(btConvexHullShape* c_this,int i){
	int c_arg_i=i;
	btVector3 c_out = c_this->getScaledPoint(c_arg_i);
	btVector3* wrap_out = new btVector3(c_out);
	return wrap_out;
}

btVector3* bullet_btConvexHullShape_getUnscaledPoints(btConvexHullShape* c_this){
	btVector3 * c_out = c_this->getUnscaledPoints();
	btVector3* wrap_out = (btVector3*)(void*)(c_out);
	return wrap_out;
}

btVector3* bullet_btConvexHullShape_getUnscaledPoints1(btConvexHullShape* c_this){
	btVector3 const * c_out = c_this->getUnscaledPoints();
	btVector3* wrap_out = (btVector3*)(void*)(c_out);
	return wrap_out;
}

void bullet_btConvexHullShape_optimizeConvexHull(btConvexHullShape* c_this){
	c_this->optimizeConvexHull();
}

#ifdef __cplusplus
}
#endif
